home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2001 December
/
pcwk12201b.iso
/
Wersje pelne i specjalne
/
Winamp 2.77 i 3.0beta
/
wa3install_beta1.exe
/
Scripts
/
Magnifier
/
scripts
/
magnifier.m
next >
Wrap
Text File
|
2001-10-02
|
4KB
|
151 lines
#include "../../../lib/std.mi"
/*--------------------------------------------------------------------
Magnifier script
--------------------------------------------------------------------*/
Class Layer Lens;
Global Int last_x, last_y;
Function Lens makeNewLens(Layout l);
Global List layout_list;
Global List Fx_list;
Global Timer mTimer;
Global Slider PrecisionSlider;
Global Int Precision;
Global Lens Fx1, Fx2, Fx3, Fx4, Fx5, Fx6, Fx7, Fx8, Fx9, Fx10;
Class Timer Magnifier;
Function int initFx(Layer _Fx);
Lens.fx_onGetPixelD(double r, double d, double x, double y) {
if (d < 0.6) return d*(sin(d)*2);
return d;
}
Lens.fx_onGetPixelA(double r, double d, double x, double y) {
return cos(d*3.14159/1.25);
}
System.onScriptUnloading() {
delete mTimer;
int i;
for (i=0;i<fx_list.getNumItems();i++) {
Layer l = fx_list.enumItem(i);
delete l;
}
delete Fx_list;
delete layout_list;
}
System.onScriptLoaded() {
PrecisionSlider = getContainer("magnifier.config").getLayout("normal").getObject("magnifier.config.slider");
Precision = getPrivateInt("magnifier", "precision", 10);
float f = 24-Precision;
PrecisionSlider.setPosition((f / 24.0) * 255.0);
mTimer = new Timer;
mTimer.setDelay(20);
if (Precision != 0) mTimer.start();
layout_list = new List;
int i, j, c;
Fx_list = new List;
for (i=0;i<getNumContainers();i++) {
if (!enumContainer(i).isDynamic())
for (j=0;j<enumContainer(i).getNumLayouts();j++) {
c = c + 1;
if (c <= 10) {
Layout l = enumContainer(i).enumLayout(j);
layout_list.addItem(l);
// eeek, i definitly need arrays, and switch... or maybe i need to make objects residing inside lists trap events, hmm..
Layer la = makeNewLens(l);
if (c == 1) Fx1 = la;
if (c == 2) Fx2 = la;
if (c == 3) Fx3 = la;
if (c == 4) Fx4 = la;
if (c == 5) Fx5 = la;
if (c == 6) Fx6 = la;
if (c == 7) Fx7 = la;
if (c == 8) Fx8 = la;
if (c == 9) Fx9 = la;
if (c == 10) Fx10 = la;
}
}
}
}
mTimer.onTimer() {
int i;
if (getMousePosX() == last_x && getMousePosY() == last_y) return;
for (i=0;i<layout_list.getNumItems();i++) {
Layout l = layout_list.enumItem(i);
int x = l.getMousePosX();
int y = l.getMousePosY();
Layer thisFx = Fx_list.enumItem(i);
if (x < -50 || x > l.getWidth()+50 || y < -50 || y > l.getHeight()+50) {
if (thisFx.fx_getEnabled())
thisFx.fx_setEnabled(0);
} else {
if (!thisFx.fx_getEnabled())
thisFx.fx_setEnabled(1);
thisFx.resize(x-50, y-50, 100, 100);
}
last_x = getMousePosx();
last_y = getMousePosY();
}
}
int initFx(Layer _Fx) {
Fx_list.addItem(_Fx);
_Fx.fx_setBgFx(1);
_Fx.fx_setWrap(0);
_Fx.fx_setBilinear(1);
_Fx.fx_setGridSize(Precision,Precision);
_Fx.fx_setRect(0);
_Fx.fx_setClear(0);
_Fx.fx_setLocalized(1);
_Fx.fx_setRealtime(0);
_Fx.fx_setAlphaMode(1);
return 0;
}
Lens makeNewLens(Layout l) {
Lens la = new Layer;
la.setXmlParam("x", "-51");
la.setXmlParam("y", "-51");
la.setXmlParam("image", "script.magnifier.transparent50x50");
la.setXmlParam("ghost", "1");
la.init(l);
initFx(la);
return la;
}
PrecisionSlider.onSetPosition(int p) {
float f = p;
p = 24-((f / 255.0) * 24.0);
for (int i=0;i<fx_list.getNumItems();i++) {
Lens fx = fx_list.enumItem(i);
fx.fx_setGridSize(p, p);
if (p == 0) {
fx.fx_setEnabled(0);
mTimer.stop();
} else {
if (Precision == 0)
mTimer.start();
if (fx.fx_getEnabled()) {
fx.fx_setEnabled(0);
fx.fx_setEnabled(1);
}
}
}
setPrivateInt("magnifier", "precision", p);
Precision = p;
}